
import kotlin.math.absoluteValue

/**
 * 类的初始化
 *  构造函数
 *   在主构造函数中定义属性  var val    减少重复代码  this.xx = xx
 *  次构造函数
 *      参数给定默认值
 *
 */
fun main() {



    val player4 = Player4("Hoooyor", isNormal = true)
    println("${player4.name},${player4.age},${player4.isNormal}")



}

/**
 * 主构造函数
 *  临时变量用下划线   _name
 */
class Player4(
    _name: String,
    var age: Int = 77,
    var isNormal: Boolean

){
    //属性策略
    var name = _name
        get() = field.capitalize()
        private set(value) {
            field = value.trim()
        }


    //TODO:这里可以省略，直接在主构造函数中定义
//    var sex = _sex
//    var isNormal = _isNormal


    //TODO:次构造函数  关键字：constructor
    //我们可以定义多个次构造函数来配置不同的参数组合

    constructor(_name:String) : this(_name,age=100,isNormal=false)
    //初始化代码逻辑
    constructor(_name: String,age: Int) : this(_name,age=99,isNormal=false){
        this.name = _name.toUpperCase()
    }



}

